Web applications are nowadays gaining momentum thanks to standardization and cross-platform uniformity of web technologies. A web application in this context is a set of collaborative computer programs spanning both clients and servers. Client-side parts of a web application may e.g. be accessed via a web browser over a network such as the Internet. They may be coded in a browser-supported language (such as HTML, JavaScript, etc.) and reliant on a common web browser to render the application executable. Server-side parts of a web application are often referred to as web services. They usually do not have a UI part, are coded using different programming languages (such as Java, PHP, Ruby, Python, Perl etc.) and executed on an infrastructure of application servers. In this application, both client and server parts of a web application are referred to as resources.
A significant aspect of a web application is its ability to communicate messages between its resources and with the resources corresponding to other web applications. In this regard, every direction of the communication may be of importance, namely client-to-server, server-to-client, client-to-client and server-to-server, as each of them opens up for new types of applications and/or user experiences.
The majority of today's web applications utilize (inherently unidirectional) HTTP for communication over TCP/IP networks. However, the diversity of devices enabled to run web applications (such as mobile phones, PDAs, TVs, MIDs etc.) is growing. So does the variety of networks (e.g. 3G, Wi-Fi, Ethernet, Bluetooth etc.) and methods (e.g. HTTP, WebSockets, XMPP, BOSH, Bayeux, IMS, SIP, SMS etc.) these devices use to communicate with the rest of the world. Naturally, not all of the devices support every mean of communication. Hence, there is a need for improved web-application communication among such heterogeneous devices.